1. Field of the Invention
The present invention relates generally to decoding technology for use in a mobile communication system. More particularly, the present invention relates to a turbo decoder using a variable window size.
2. Description of the Related Art
General digital communication systems widely use forward error correction (FEC) codes to effectively correct an error occurring on a channel at the time of data transmission and improve the reliability of data transmission. These FEC codes commonly include turbo codes. The turbo codes have been adopted by both a synchronous type code division multiple access 2000 (CDMA 2000) system, and an asynchronous type universal mobile telecommunication system (UMTS) serving as third generation (3G) mobile communication systems, because the turbo codes have excellent error correction capabilities at the time of transmitting data at a high rate as compared with convolution codes. Since these two systems can both perform high-speed packet data communication, the performance of a turbo decoder can be improved. The 3G mobile communication systems support various code or coding rates in the turbo decoder.
FIG. 1 is a block diagram illustrating a structure of a conventional turbo decoder.
As illustrated in FIG. 1, the turbo decoder 200 is an example of a constituent decoder designed on the basis of a soft-input soft-output (SISO) scheme. In place of the SISO scheme, the turbo decoder can also be implemented with a maximum a posteriori (MAP) scheme or a register exchange soft output Viterbi algorithm (RESOVA). Here, the SISO scheme computes reliable probability values for symbols, and the RESOVA computes probability values for codewords while regarding a symbol path as a long codeword.
Referring to FIG. 1, a symbol (that is, data bits) stored in a memory buffer 100 is provided to an input terminal of the turbo decoder 200. Deinterleaved bits are classified into a systematic code, and parity-1 and parity-2 codes serving as nonsystematic codes. The systematic code, the parity-1 code, and the parity-2 code, are stored in the memory buffer 100. Systematic code bits and parity code bits are simultaneously output from the memory buffer 100. Because three types of systematic and non-systematic codes are output from the memory buffer 100, codes output from the memory buffer 100 are provided to a multiplexer (MUX) 210 of the turbo decoder 200 through three buses.
The turbo decoder 200 comprises a constituent decoder 220 to which an SISO algorithm is applied (hereinafter, referred to as the “SISO decoder”), an interleaver 230, a deinterleaver 240, an output buffer 250, and a cyclic redundancy code (CRC) checker 260.
The SISO decoder 220 receives the output of the MUX 210, and performs an SISO decoding operation to output a result of the decoding operation as illustrated in FIG. 2. The interleaver 230 interleaves the output of the SISO decoder 220. The deinterleaver 230 de-interleaves the output of the SISO decoder 220. The output buffer 250 stores the output of the deinterleaver 240 such that an L1 layer processor 270 can refer to a result of the deinterleaving. The CRC checker 260 performs a CRC checking operation on the output of the deinterleaver 240, and provides a result of the checking operation to the L1 layer processor 270.
The SISO decoder 220 computes several metrics in the decoding process. That is, while the SISO decoder 220 performs the decoding process, values of a delta metric, alpha (α) metric, beta (β) metric, and log likelihood ratio (LLR) are computed.
The delta metric is a branch metric, and represents a transition probability for a path from a state to another state in a coding trellis structure. The alpha metric is a forward state metric, and represents a cumulative transition probability from a previous state to the present state. The beta metric is a backward state metric, and represents a cumulative transition probability from the next state to the present state. The LLR value is computed from the alpha and beta metrics. The LLR value represents a probability for a symbol, and expresses a ratio of the probability of a ‘0’ value and the probability of a ‘1’ value in a log scale.
Generally, because a frame mode decoder requires alpha and beta metrics to compute an LLR value, the beta metrics are computed after all the alpha metrics are computed, and then LLR values are sequentially computed. Accordingly, while the beta metrics are computed, a delay time occurs.
FIGS. 2A and 2B illustrate a metric computation order in the general SISO decoder. FIG. 2A illustrates a process for computing the alpha metrics, and FIG. 2B illustrates a process for computing the beta metrics.
As illustrated in FIGS. 2A and 2B, it can be found that a difference between an alpha metric computation and a beta metric computation is present. An alpha metric αk in the k-th state, is computed from a previous alpha metric in the (k−1)-th state. A beta metric βk in the k-th state, is computed from the next beta metric in the (k+1)-th state subsequent to the k-th state. To compute the beta metrics, received signal components must be referred to in a reverse order. Accordingly, an initial delay time corresponding to a total received-signal length occurs.
FIG. 3 illustrates the metric computation order of the conventional turbo decoder based on a frame mode scheme.
Referring to FIG. 3, an initial delay time corresponding to a frame interval occurs because alpha metrics and LLR (λ) values are computed after all beta metrics of one frame are computed. The SISO decoder based on the frame mode scheme computes the alpha metrics and the LLR values after computing the beta metrics. Accordingly, a delay time occurs during a beta metric computation time. To reduce this initial delay time, a window mode was proposed.
To address the above-described problems, a sliding window mode is applied. In the sliding window mode, two beta metric blocks are used, and successive beta metrics are output.
FIG. 4 illustrates the computation order of the turbo decoder based on the window mode scheme.
Referring to FIG. 4, the SISO decoder based on the window mode scheme divides a signal received for a beta metric computation into a predetermined window size. When beta metrics are computed from the divided received signal, initial computation values are inaccurate, but later computation values are accurate. These accurate computation values are used to compute LLR values. While accurate values are computed with respect to a window, inaccurate values are computed with respect to another window. For convenience of computation, an inaccurate interval and a reliable interval are set to the same size.
A general example of computing an LLR (λ) value associated with a beta metric will now be described in greater detail.
First, a beta metric 1B (β1B) and a beta metric 1A (β1A) are computed in a reverse order during a window interval. Immediately after the beta metric 1A (β1A) is computed, a beta metric 2C (β1C) and a beta metric 2B (β2B) are computed in a reverse order. The inaccurate beta metric 1A (β1A) of the beta metrics 1B (β1B) and 1A (β1A) in the initial delay interval is discarded. Immediately after the accurate beta metric 2B (β2B) is computed, an alpha metric αB and an LLR λB are computed simultaneously. A window interval for which β1B and β1A are computed corresponds to the initial delay time.
As described above, the general SISO decoder uses a fixed sliding window size. In this case, when a code rate is low, no problems are encountered. However, when a code rate is high, decoding performance is degraded.
Specifically, when the conventional turbo decoder computes a beta metric from the last part of a received signal, the reliability of the metric computation becomes high. However, the sliding window scheme divides a total interval into multiple intervals, performs computations on an interval-by-interval basis, discards an unreliable interval, and uses output values subsequent to the discarded interval. When a code rate is high, a long interval is required such that desired reliability can be obtained. In this case, a sliding window size of a relatively long length may be set according to the high code rate. However, when a code rate of received data is low, there is a problem in that an additional initial delay occurs due to the sliding window size of the unnecessarily long length.
Accordingly, a need exists for a system and method to adjust a window size on the basis of a code rate for a turbo decoder using the sliding window.